package com.jack006.article.service;

import com.jack006.pojo.Category;
import com.jack006.pojo.bo.NewArticleBO;
import com.jack006.utils.PagedGridResult;

import java.util.Date;

/**
 * @Classname ArticleService
 * @Description 文章接口定义
 * @Date 2021-07-03 14:39
 * @Created by jack
 */
public interface ArticleService {

    /**
     * 发布文章
     * @param newArticleBO
     * @param category
     */
    void createCategory(NewArticleBO newArticleBO,Category category);

    /**
     * 更新定时发布为即时发布
     */
    void updateAppointToPublish();

    /**
     * 更新单条文章为即时发布
     */
    void updateArticleToPublish(String articleId);

    /**
     * 查询我的文章列表
     * @param userId
     * @param keyword
     * @param status
     * @param startDate
     * @param endDate
     * @param page
     * @param pageSize
     * @return
     */
    PagedGridResult queryArticleList(String userId, String keyword, Integer status, Date startDate, Date endDate, Integer page, Integer pageSize);

    /**
     * 更改文章状态
     * @param articleId
     * @param pendingStatus
     */
    void updateArticleReviewStatus(String articleId, Integer pendingStatus);

    /**
     * 管理员查询所有用户文章列表
     * @param status
     * @param page
     * @param pageSize
     * @return
     */
    PagedGridResult queryArticleListAdmin(Integer status, Integer page, Integer pageSize);

    /**
     * 文章删除
     * @param userId
     * @param articleId
     */
    void deleteArticle(String userId, String articleId);

    /**
     * 文章撤回
     * @param userId
     * @param articleId
     */
    void withdrawArticle(String userId, String articleId);

    /**
     * 关联文章和 gridFs
     * @param articleId
     * @param articleHtmlGridId
     */
    void updateArticleToGridFs(String articleId, String articleHtmlGridId);
}
